package com.sunyifeng.ch26;

/**
 * 参考一文带你搞懂MVVM https://baijiahao.baidu.com/s?id=1798688597244391735&wfr=spider&for=pc
 *
 * MVVM（Model-View-ViewModel）是一种软件架构设计模式，主要用于构建用户界面的应用程序。MVVM 模式由三部分组成：
 *
 * Model：数据模型，负责存储应用程序的数据。它独立于视图（View）和视图模型（ViewModel），可以在不同的视图间共享。
 * View：用户界面，负责数据的展示。通常使用HTML、CSS和JavaScript（或特定框架的模板语言）来实现。
 * ViewModel：视图模型，是View和Model之间的桥梁。它负责处理View和Model之间的交互，比如将Model的数据转换为View可以展示的格式，
 * 或者将用户在View上的操作转换为Model的数据更新。
 */
public class MVCPatternDemo {

    public static void main(String[] args) {

        //从数据库获取学生记录
        Student model  = retrieveStudentFromDatabase();

        //创建一个视图：把学生详细信息输出到控制台
        StudentView view = new StudentView();

        StudentController controller = new StudentController(model, view);

        controller.updateView();

        //更新模型数据
        controller.setStudentName("John");

        controller.updateView();
    }

    private static Student retrieveStudentFromDatabase(){
        Student student = new Student();
        student.setName("Robert");
        student.setRollNo("10");
        return student;
    }
}